/**
 * 
 */
package br.ufal.ic.sd.mom.singleton;

import java.util.ArrayList;
import java.util.List;

import br.ufal.ic.sd.mom.moduloreplicador.ModuloReplicador;
import br.ufal.ic.sd.mom.thread.Replicador;
import br.ufal.ic.sd.mom.thread.TratadorUsuario;

/**
 * @author keven lennisk almeida andrade
 * 
 */
public class Controlador {

	private static List<TratadorUsuario> usuarios = new ArrayList<TratadorUsuario>();
	private static List<Replicador> replicadores = new ArrayList<Replicador>();

	private static Controlador controlador = null;

	private Controlador() {
		System.out.println("Modulo controlador iniciado");
	}

	public static Controlador getInstance() {
		if (controlador == null) {
			controlador = new Controlador();
		}
		return controlador;
	}

	public static void adicionarUsuario(TratadorUsuario tratador) {
		usuarios.add(tratador);
	}

	public static void removerTratador(TratadorUsuario tratador) {
		int indice = usuarios.indexOf(tratador);
		usuarios.remove(tratador);
		replicadores.remove(indice);
	}

	public static void replicarMensagem(String mensagem) {

		for (Replicador replicador : replicadores) {
			replicador.adicionarMensagem(mensagem);
		}
	}

	public static void adiconarReplicador(Replicador replicador) {
		replicadores.add(replicador);
	}

	public static void criarReplicador(TratadorUsuario tratador) {
		int indice = usuarios.indexOf(tratador);
		ModuloReplicador.adicionarReplicadorFila(usuarios.get(indice).getCanal());
	}
}
